---
import Layout from '../../../layouts/Layout.astro';
import ProductCard from '../../../components/ProductCard.astro';
import Breadcrumb from '../../../components/Breadcrumb.astro';
import { getProductsFromDB, getBrandBySlugFromDB, getModelsByBrand, getBrandsFromDB } from '../../../lib/products';
import { getBrandContent } from '../../../data/brand-content';
import { getBrandLogo } from '../../../components/BrandLogos';
import UspStrip from '../../../components/UspStrip.astro';
const { slug } = Astro.params;
const spSize = Astro.cookies.get('sp_size')?.value || undefined;
const dbBrand = await getBrandBySlugFromDB(slug!);
const brandName = dbBrand?.name || slug!.charAt(0).toUpperCase() + slug!.slice(1);
const logoSrc = dbBrand?.logo_url || null;
const inlineBrandSvg = getBrandLogo(slug!);
const brandSneakers = await getProductsFromDB({ limit: 24, brand: slug!, size: spSize });
const models = await getModelsByBrand(slug!);
const content = getBrandContent(slug!);
const allBrands = await getBrandsFromDB();
const relatedBrands = allBrands.filter(b => b.slug !== slug).slice(0, 6);
const lowestPrice = brandSneakers.length > 0 ? Math.min(...brandSneakers.map(p => p.lowestPrice)) : 0;
const title = content?.metaTitle || `${brandName} sneakers vergelijken — ${brandSneakers.length} modellen vanaf €${lowestPrice.toFixed(2).replace('.', ',')} | SneakerPicks`;
const description = content?.metaDescription || `${brandName} sneaker prijzen vergelijken bij ${models.length}+ modellen. Vanaf €${lowestPrice.toFixed(2).replace('.', ',')}. Vind de laagste prijs bij Nederlandse webshops.`;
// Brand-level FAQ (for FAQPage schema + optional render)
const priceStr = lowestPrice > 0 ? `€${lowestPrice.toFixed(2).replace('.', ',')}` : null;
const brandFaq: { question: string; answer: string }[] = [];
if (priceStr) {
brandFaq.push({
question: `Wat kost een ${brandName} sneaker?`,
answer: `${brandName} sneakers zijn bij Nederlandse webshops verkrijgbaar vanaf ${priceStr}. De exacte prijs hangt af van het model, kleur, maat en winkel. Op SneakerPicks vergelijken we prijzen van ${brandSneakers.length}+ ${brandName} modellen.`,
});
}
if (models.length > 0) {
const topModels = (content?.popularModels ?? models.slice(0, 6).map(m => m.name)).slice(0, 6).join(', ');
brandFaq.push({
question: `Welke ${brandName} modellen zijn populair?`,
answer: `De populairste ${brandName} modellen op dit moment zijn: ${topModels}. Bekijk hierboven alle beschikbare modellen, inclusief kleuren en voorraad per winkel.`,
});
}
brandFaq.push({
question: `Waar kan ik ${brandName} sneakers het goedkoopst kopen?`,
answer: `Op SneakerPicks vergelijk je dagelijks de prijzen van ${brandName} sneakers bij alle grote Nederlandse sneakershops. Wij ranken op laagste prijs (onafhankelijk van affiliate-commissie) zodat je direct ziet waar een model het goedkoopst is.`,
});
brandFaq.push({
question: `Zijn ${brandName} sneakers origineel via SneakerPicks?`,
answer: `SneakerPicks is een prijsvergelijker, geen webshop. We linken direct door naar de officiële productpagina's bij Nederlandse retailers (o.a. via Awin, Webgains, TradeTracker, Daisycon en Bol). De bestelling en levering worden afgehandeld door de gekozen winkel, die verantwoordelijk is voor echtheid en garantie.`,
});
if (content?.founded && content?.origin) {
brandFaq.push({
question: `Wanneer is ${brandName} opgericht?`,
answer: `${brandName} is opgericht in ${content.founded} in ${content.origin}.`,
});
}
const brandFaqLd = brandFaq.length > 0 ? {
"@context": "https://schema.org",
"@type": "FAQPage",
"inLanguage": "nl-NL",
"mainEntity": brandFaq.map(f => ({
"@type": "Question",
"name": f.question,
"acceptedAnswer": { "@type": "Answer", "text": f.answer },
})),
} : null;
const brandSameAs = [content?.wikipediaUrl, content?.wikidataUrl].filter((u): u is string => typeof u === 'string' && u.length > 0);
const analyticsItems = brandSneakers.map((s, i) => ({
item_id: s.id, item_name: `${s.brand} ${s.name}`, item_brand: s.brand, price: s.lowestPrice, index: i
}));
const listId = `brand_${slug}`;
const listName = `${brandName} Sneakers`;
---
{content && (